home *** CD-ROM | disk | FTP | other *** search
-
- ; Beipiel-(Block-)Filtermodul (*.FM)
- ; (c)1999 Richard Gordon Faika
-
- ; --------------------------------------------------------------------
- ; Parameter holen
- ; Hier werden die benötigten Parameter vom Stack geholt.
- ; --------------------------------------------------------------------
-
- move 4(sp),d0 ; Funktionsnummer holen
- move.l 6(sp),a1 ; String-Startadresse holen
- move 14(sp),d1 ; Stringlänge holen
-
- tst d0 ; Filtern?
- beq filter
-
-
-
-
- ; --------------------------------------------------------------------
- ; Funktionsnummer auswerten
- ; --------------------------------------------------------------------
-
- cmpi #1,d0
- bne case1
- bra GetInfo ; Info
- case1: cmpi #2,d0
- bne case2
- bra ModInit ; Init
- case2: cmpi #3,d0
- bne noFunc
- bra ModExit ; Exit
-
-
- ; --------------------------------------------------------------------
- ; Modul-Initialisierung
- ; --------------------------------------------------------------------
- ModInit: clr.l d0
- rts
-
-
-
- ; --------------------------------------------------------------------
- ; Modul-Deinitialisierung
- ; --------------------------------------------------------------------
- ModExit: clr.l d0
- rts
-
-
-
- ; --------------------------------------------------------------------
- ; Infotextzeiger zurückgeben
- ; Der Infotext wird im Modulinfo-Dialog von Luna angezeigt, wenn
- ; der Anwender eine Modulinformation zu diesem Modul wünscht.
- ; --------------------------------------------------------------------
- GetInfo: lea.l info(pc),a0 ; Zeiger auf Infotext zurück.
- move.l a0,d0
- rts
-
-
-
-
-
- ; --------------------------------------------------------------------
- ; unbekannte Funktionsnummer
- ; --------------------------------------------------------------------
- noFunc: moveq.l #-32,d0
- rts
-
-
-
-
-
-
-
- ; --------------------------------------------------------------------
- ; Filterroutine
- ; Die eigentliche Filterroutine, mit der man den Text verändern kann.
- ; Bei Textlängenänderung o.Ä., ist in den Arbeitspuffer zu schreiben
- ; und eine 1 zurückzugeben.
- ; --------------------------------------------------------------------
- filter: tst d1
- beq exit
- bra goin
- loop:
- move.b (a1),d0
- rol.b #4,d0 ; Schwachsinn, aber Effektvoll =:)
- move.b d0,(a1)+
- goin:
- dbra d1,loop
- exit: clr.l d0 ; 0 = OK
- rts
-
-
-
-
-
-
- ; --------------------------------------------------------------------
- ; Infotext
- ; Der Infotext muß dieser Struktur folgen, weil immer 6 Strings nacheinander
- ; gelesen werden. Minimum ist also ein Nullbyte je Eintrag.
- ; --------------------------------------------------------------------
- info: dc.b ' Beispielmodul',0 ; Modulinfo für Popup, max. 24 Zeichen+Nullbyte
- dc.b 'Autorenname',0 ; Autorenname, max. 20 Zeichen+Nullbyte
- dc.b 'Infotext Zeile 1',0 ; max. 40 Zeichen+Nullbyte
- dc.b 'Infotext Zeile 2',0 ; ""
- dc.b 'Infotext Zeile 3',0 ; ""
- dc.b 'Infotext Zeile 4',0 ; ""
-